Agent form: ace-editor highlighting and theme (#1727)

YURA BUYLOV 7 years ago
parent
commit
864b0708a7

+ 4 - 0
app/assets/javascripts/ace.js.coffee

@@ -2,3 +2,7 @@
2 2
 #= require ace/mode-javascript.js
3 3
 #= require ace/mode-markdown.js
4 4
 #= require ace/mode-coffee.js
5
+#= require ace/mode-sql.js
6
+#= require ace/mode-json.js
7
+#= require ace/mode-yaml.js
8
+#= require ace/mode-text.js

+ 15 - 7
app/assets/javascripts/pages/agent-edit-page.js.coffee

@@ -177,20 +177,28 @@ class @AgentEditPage
177 177
   buildAce: ->
178 178
     $(".ace-editor").each ->
179 179
       unless $(this).data('initialized')
180
-        $(this).data('initialized', true)
181
-        $source = $($(this).data('source')).hide()
180
+        $this = $(this)
181
+        $this.data('initialized', true)
182
+        $source = $($this.data('source')).hide()
182 183
         editor = ace.edit(this)
183
-        $(this).data('ace-editor', editor)
184
+        $this.data('ace-editor', editor)
184 185
         session = editor.getSession()
185 186
         session.setTabSize(2)
186 187
         session.setUseSoftTabs(true)
187 188
         session.setUseWrapMode(false)
188 189
 
189 190
         setSyntax = ->
190
-          switch $("[name='agent[options][language]']").val()
191
-            when 'JavaScript' then session.setMode("ace/mode/javascript")
192
-            when 'CoffeeScript' then session.setMode("ace/mode/coffee")
193
-            else session.setMode("ace/mode/text")
191
+          if mode = $this.data('mode')
192
+            session.setMode("ace/mode/" + mode)
193
+
194
+          if theme = $this.data('theme')
195
+            editor.setTheme("ace/theme/" + theme);
196
+
197
+          if mode = $("[name='agent[options][language]']").val()
198
+            switch mode
199
+              when 'JavaScript' then session.setMode("ace/mode/javascript")
200
+              when 'CoffeeScript' then session.setMode("ace/mode/coffee")
201
+              else session.setMode("ace/mode/" + mode)
194 202
 
195 203
         $("[name='agent[options][language]']").on 'change', setSyntax
196 204
         setSyntax()

+ 3 - 1
app/presenters/form_configurable_agent_presenter.rb

@@ -23,7 +23,9 @@ class FormConfigurableAgentPresenter < Decorator
23 23
       @view.content_tag 'div' do
24 24
         @view.concat @view.text_area_tag("agent[options][#{attribute}]", value, html_options.merge(class: 'form-control', rows: 3))
25 25
         if data[:ace].present?
26
-          @view.concat @view.content_tag('div', '', class: 'ace-editor', data: { source: "[name='agent[options][#{attribute}]']" })
26
+          ace_options = { source: "[name='agent[options][#{attribute}]']", mode: '', theme: ''}.deep_symbolize_keys!
27
+          ace_options.deep_merge!(data[:ace].deep_symbolize_keys) if data[:ace].is_a?(Hash)
28
+          @view.concat @view.content_tag('div', '', class: 'ace-editor', data: ace_options)
27 29
         end
28 30
       end
29 31
     when :boolean